/**
	* Copyright (c) minuteproject, minuteproject@gmail.com
	* All rights reserved.
	* 
	* Licensed under the Apache License, Version 2.0 (the "License")
	* you may not use this file except in compliance with the License.
	* You may obtain a copy of the License at
	* 
	* http://www.apache.org/licenses/LICENSE-2.0
	* 
	* Unless required by applicable law or agreed to in writing, software
	* distributed under the License is distributed on an "AS IS" BASIS,
	* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
	* See the License for the specific language governing permissions and
	* limitations under the License.
	* 
	* More information on minuteproject:
	* twitter @minuteproject
	* wiki http://minuteproject.wikispaces.com 
	* blog http://minuteproject.blogspot.net
	* 
*/
/**
	* template reference : 
	* - name : OpenxavaDomainObjectUML
	* - file name : DomainObjectUMLJPAAnnotationOXAnnotationV4.vm
*/
package sistema_oficial.sistema_oficial.domain.sistemaoficial;

//MP-MANAGED-ADDED-AREA-BEGINNING @import@
//MP-MANAGED-ADDED-AREA-ENDING @import@
import java.sql.*;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;

import javax.persistence.*;
import org.openxava.annotations.*;

import sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleDevolucionCompra;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.ImpuestoCompra;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.FacturaCompra;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.BienServicio;
import sistema_oficial.sistema_oficial.domain.sistemaoficial.Medida;

/**
 *
 * <p>Title: DetalleCompra</p>
 *
 * <p>Description: Domain Object describing a DetalleCompra entity</p>
 *
 */
@Entity (name="DetalleCompra")
@Table (name="detalle_compra")
@Views({
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-base-detalle_compra@
	@View(
		name="base",
		members=
        "" 	
        + "identificador  ; "
        + "cantidad  ; "
        + "medidaIdentificador  ; "
        + "bienServicioIdentificador  ; "
        + "precioUnitario  ; "
        + "subtotal  ; "
        + "iva  ; "
        + "base  ; "
        + "facturaCompraIdentificador  ; "
		),
//MP-MANAGED-UPDATABLE-ENDING
	@View(
		name="Create", 
		extendsView="base"
	),
	@View(
		name="Update", 
		extendsView="base",
        members=
          "" 	
	    + "detalleDevolucionCompra { detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador };" 
	    + "impuestoCompra { impuestoCompraDetalleCompraViaDetalleCompraIdentificador };" 
	),
	@View(extendsView="base",
        members=
          "" 	
	    ),
    @View(name="detalleCompraDEFAULT_VIEW", 
	   members=
          " identificador ;" 	
        + "cantidad  ; "
        + "precioUnitario  ; "
        + "subtotal  ; "
        + "iva  ; "
        + "base  ; "
	),
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @view-reference-detalle_compra@
    @View(name="reference", 
       extendsView="detalleCompraDEFAULT_VIEW"
//MP-MANAGED-UPDATABLE-ENDING
    )
})

@Tabs({
@Tab(
properties=
     " cantidad "
    +",  precioUnitario "
    +",  subtotal "
    +",  iva "
    +",  base "
)
,
@Tab(
name = "DetalleCompraTab",
properties=
     " cantidad "
    +",  precioUnitario "
    +",  subtotal "
    +",  iva "
    +",  base "
)
,
@Tab(
name = "DetalleCompraTabWithRef",
properties=
     " cantidad "
    +",  precioUnitario "
    +",  subtotal "
    +",  iva "
    +",  base "
)
})
//MP-MANAGED-ADDED-AREA-BEGINNING @class-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @class-annotation@
public class DetalleCompra {

    @Hidden @Id @Column(name="identificador" )
    private Integer identificador; 

//MP-MANAGED-ADDED-AREA-BEGINNING @cantidad-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @cantidad-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-cantidad@
    @Column(name="cantidad",   nullable=false,  unique=false)
    @Required
    private java.math.BigDecimal cantidad;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @precio_unitario-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @precio_unitario-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-precio_unitario@
    @Column(name="precio_unitario",    nullable=true,  unique=false)
    private java.math.BigDecimal precioUnitario;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @subtotal-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @subtotal-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-subtotal@
    @Column(name="subtotal",    nullable=true,  unique=false)
    private java.math.BigDecimal subtotal;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @iva-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @iva-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-iva@
    @Column(name="iva",    nullable=true,  unique=false)
    private java.math.BigDecimal iva;	
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-ADDED-AREA-BEGINNING @base-field-annotation@
//MP-MANAGED-ADDED-AREA-ENDING @base-field-annotation@

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @ATTRIBUTE-base@
    @Column(name="base",    nullable=true,  unique=false)
    private java.math.BigDecimal base;	
//MP-MANAGED-UPDATABLE-ENDING


//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-FacturaCompra-detalle_compra@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="factura_compra_identificador", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private FacturaCompra facturaCompraIdentificador; 
    
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-BienServicio-detalle_compra@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="bien_servicio_identificador", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private BienServicio bienServicioIdentificador; 
    
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @parent-Medida-detalle_compra@
    @ManyToOne (fetch=FetchType.LAZY ,optional=false) //remove optional=false to aggragate but leads to a side effect when going directly to the entity: required check is not performed=> if no set DB check constraint is raised...
    @JoinColumn(name="medida_identificador", nullable=false,  unique=false  )
    @ReferenceView ("reference") 
    private Medida medidaIdentificador; 
    
//MP-MANAGED-UPDATABLE-ENDING
//children
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador-detalle_compra@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.DetalleDevolucionCompra.class, fetch=FetchType.LAZY, mappedBy="detalleCompraIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <DetalleDevolucionCompra> detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador = new HashSet<DetalleDevolucionCompra>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @child-impuestoCompraDetalleCompraViaDetalleCompraIdentificador-detalle_compra@
    @OneToMany (targetEntity=sistema_oficial.sistema_oficial.domain.sistemaoficial.ImpuestoCompra.class, fetch=FetchType.LAZY, mappedBy="detalleCompraIdentificador", cascade=CascadeType.REMOVE)//, cascade=CascadeType.ALL)
    private Set <ImpuestoCompra> impuestoCompraDetalleCompraViaDetalleCompraIdentificador = new HashSet<ImpuestoCompra>(); 
   
//MP-MANAGED-UPDATABLE-ENDING
//m2m
    /**
    * Default constructor
    */
    public DetalleCompra() {
    }


    public Integer getIdentificador() {
        return identificador;
    }
	
    public void setIdentificador (Integer identificador) {
        this.identificador =  identificador;
    }
    

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-cantidad@
    public java.math.BigDecimal getCantidad() {
        return cantidad;
    }
	
    public void setCantidad (java.math.BigDecimal cantidad) {
        this.cantidad =  cantidad;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-precio_unitario@
    public java.math.BigDecimal getPrecioUnitario() {
        return precioUnitario;
    }
	
    public void setPrecioUnitario (java.math.BigDecimal precioUnitario) {
        this.precioUnitario =  precioUnitario;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-subtotal@
    public java.math.BigDecimal getSubtotal() {
        return subtotal;
    }
	
    public void setSubtotal (java.math.BigDecimal subtotal) {
        this.subtotal =  subtotal;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-iva@
    public java.math.BigDecimal getIva() {
        return iva;
    }
	
    public void setIva (java.math.BigDecimal iva) {
        this.iva =  iva;
    } 
//MP-MANAGED-UPDATABLE-ENDING

//MP-MANAGED-UPDATABLE-BEGINNING-DISABLE @GETTER-SETTER-base@
    public java.math.BigDecimal getBase() {
        return base;
    }
	
    public void setBase (java.math.BigDecimal base) {
        this.base =  base;
    } 
//MP-MANAGED-UPDATABLE-ENDING


    public FacturaCompra getFacturaCompraIdentificador () {  //
    	return facturaCompraIdentificador;
    }
	
    public void setFacturaCompraIdentificador (FacturaCompra facturaCompraIdentificador) {
    	this.facturaCompraIdentificador = facturaCompraIdentificador;//this.facturaCompraIdentificador = facturaCompra;
    }
    public BienServicio getBienServicioIdentificador () {  //
    	return bienServicioIdentificador;
    }
	
    public void setBienServicioIdentificador (BienServicio bienServicioIdentificador) {
    	this.bienServicioIdentificador = bienServicioIdentificador;//this.bienServicioIdentificador = bienServicio;
    }
    public Medida getMedidaIdentificador () {  //
    	return medidaIdentificador;
    }
	
    public void setMedidaIdentificador (Medida medidaIdentificador) {
    	this.medidaIdentificador = medidaIdentificador;//this.medidaIdentificador = medida;
    }

    public Set<DetalleDevolucionCompra> getDetalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador() {
        if (detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador == null){
            detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador = new HashSet<DetalleDevolucionCompra>();
        }
        return detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador;
    }

    public void setDetalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador (Set<DetalleDevolucionCompra> detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador) {
        this.detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador = detalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador;
    }	
    
    public void addDetalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador (DetalleDevolucionCompra detalleDevolucionCompra) {
    	    getDetalleDevolucionCompraDetalleCompraViaDetalleCompraIdentificador().add(detalleDevolucionCompra);
    }
    
    public Set<ImpuestoCompra> getImpuestoCompraDetalleCompraViaDetalleCompraIdentificador() {
        if (impuestoCompraDetalleCompraViaDetalleCompraIdentificador == null){
            impuestoCompraDetalleCompraViaDetalleCompraIdentificador = new HashSet<ImpuestoCompra>();
        }
        return impuestoCompraDetalleCompraViaDetalleCompraIdentificador;
    }

    public void setImpuestoCompraDetalleCompraViaDetalleCompraIdentificador (Set<ImpuestoCompra> impuestoCompraDetalleCompraViaDetalleCompraIdentificador) {
        this.impuestoCompraDetalleCompraViaDetalleCompraIdentificador = impuestoCompraDetalleCompraViaDetalleCompraIdentificador;
    }	
    
    public void addImpuestoCompraDetalleCompraViaDetalleCompraIdentificador (ImpuestoCompra impuestoCompra) {
    	    getImpuestoCompraDetalleCompraViaDetalleCompraIdentificador().add(impuestoCompra);
    }
    



//MP-MANAGED-ADDED-AREA-BEGINNING @implementation@
//MP-MANAGED-ADDED-AREA-ENDING @implementation@

}
